// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.


using System;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Text;
using Silk.NET.Core;
using Silk.NET.Core.Native;
using Silk.NET.Core.Attributes;
using Silk.NET.Core.Contexts;
using Silk.NET.Core.Loader;

#pragma warning disable 1591

namespace Silk.NET.OpenXR
{
    [NativeName("Name", "XrCompositionLayerAlphaBlendFB")]
    public unsafe partial struct CompositionLayerAlphaBlendFB
    {
        public CompositionLayerAlphaBlendFB
        (
            StructureType? type = StructureType.TypeCompositionLayerAlphaBlendFB,
            void* next = null,
            BlendFactorFB? srcFactorColor = null,
            BlendFactorFB? dstFactorColor = null,
            BlendFactorFB? srcFactorAlpha = null,
            BlendFactorFB? dstFactorAlpha = null
        ) : this()
        {
            if (type is not null)
            {
                Type = type.Value;
            }

            if (next is not null)
            {
                Next = next;
            }

            if (srcFactorColor is not null)
            {
                SrcFactorColor = srcFactorColor.Value;
            }

            if (dstFactorColor is not null)
            {
                DstFactorColor = dstFactorColor.Value;
            }

            if (srcFactorAlpha is not null)
            {
                SrcFactorAlpha = srcFactorAlpha.Value;
            }

            if (dstFactorAlpha is not null)
            {
                DstFactorAlpha = dstFactorAlpha.Value;
            }
        }

/// <summary></summary>
        [NativeName("Type", "XrStructureType")]
        [NativeName("Type.Name", "XrStructureType")]
        [NativeName("Name", "type")]
        public StructureType Type;
/// <summary></summary>
        [NativeName("Type", "void*")]
        [NativeName("Type.Name", "void")]
        [NativeName("Name", "next")]
        public void* Next;
/// <summary></summary>
        [NativeName("Type", "XrBlendFactorFB")]
        [NativeName("Type.Name", "XrBlendFactorFB")]
        [NativeName("Name", "srcFactorColor")]
        public BlendFactorFB SrcFactorColor;
/// <summary></summary>
        [NativeName("Type", "XrBlendFactorFB")]
        [NativeName("Type.Name", "XrBlendFactorFB")]
        [NativeName("Name", "dstFactorColor")]
        public BlendFactorFB DstFactorColor;
/// <summary></summary>
        [NativeName("Type", "XrBlendFactorFB")]
        [NativeName("Type.Name", "XrBlendFactorFB")]
        [NativeName("Name", "srcFactorAlpha")]
        public BlendFactorFB SrcFactorAlpha;
/// <summary></summary>
        [NativeName("Type", "XrBlendFactorFB")]
        [NativeName("Type.Name", "XrBlendFactorFB")]
        [NativeName("Name", "dstFactorAlpha")]
        public BlendFactorFB DstFactorAlpha;
    }
}
